/*
这是非信息类2013年出的题目，大家来看看，你会做吗？

输入 n 的值，输出如下例（ n=4 ）所示的数字菱形。
　 4
　434
 43234
4321234
 43234
　434
　 4
输入：
n

输出：
数字菱形

友情提示：同学们总结一下打印星号组成的实心图形程序的编程思路：第一步，打印星号组成的正方形；第二步，改变每行星号的个数，打印每行星号数量不一样的图形；如果是空心图形，每行第一个和最后一个位置输出星号，其他位置输出空格。

现在我们练习输出变化的字符，在打印星号图形的基础上，原来输出*号的位置，将printf("*");改为printf("%2d",x);当然，原来输出一个*号的地方只占一个字符的位置，现在都要改为2个字符的位置，如果输出的是数字且多于2个，则要是%3d或%4d了。

x是多少呢？则要寻找其规律，就是该输出位置与所在行列的关系。

注意给出的测试用例，输出的数字是左对齐啊。不用数组就可以完成。
*/

/*
测试用例1:
输入：
1↵
输出：
1 ↵

测试用例2:
输入：
2↵
输出：
  2 ↵
2 1 2 ↵
  2 ↵

测试用例3:
输入：
3↵
输出：
    3 ↵
  3 2 3 ↵
3 2 1 2 3 ↵
  3 2 3 ↵
    3 ↵

测试用例4:
输入：
8↵
输出：
              8 ↵
            8 7 8 ↵
          8 7 6 7 8 ↵
        8 7 6 5 6 7 8 ↵
      8 7 6 5 4 5 6 7 8 ↵
    8 7 6 5 4 3 4 5 6 7 8 ↵
  8 7 6 5 4 3 2 3 4 5 6 7 8 ↵
8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 ↵
  8 7 6 5 4 3 2 3 4 5 6 7 8 ↵
    8 7 6 5 4 3 4 5 6 7 8 ↵
      8 7 6 5 4 5 6 7 8 ↵
        8 7 6 5 6 7 8 ↵
          8 7 6 7 8 ↵
            8 7 8 ↵
              8 ↵

测试用例5:
输入：
10↵
输出：
                  10↵
                109 10↵
              109 8 9 10↵
            109 8 7 8 9 10↵
          109 8 7 6 7 8 9 10↵
        109 8 7 6 5 6 7 8 9 10↵
      109 8 7 6 5 4 5 6 7 8 9 10↵
    109 8 7 6 5 4 3 4 5 6 7 8 9 10↵
  109 8 7 6 5 4 3 2 3 4 5 6 7 8 9 10↵
109 8 7 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10↵
  109 8 7 6 5 4 3 2 3 4 5 6 7 8 9 10↵
    109 8 7 6 5 4 3 4 5 6 7 8 9 10↵
      109 8 7 6 5 4 5 6 7 8 9 10↵
        109 8 7 6 5 6 7 8 9 10↵
          109 8 7 6 7 8 9 10↵
            109 8 7 8 9 10↵
              109 8 9 10↵
                109 10↵
                  10↵

*/
#include <iostream>
using namespace std;

int main(int argc, char *argv[]) {
  
  // 接收用户输入
	int n;
  cin >> n;
  
  // 打印
  for (int i=1; i<2*n; i++)
  {
    // 数字
    int num = n;
    
    // 上半部分
    if (i <= n)
    {
      for (int j=1; j<n+i; j++)
      {
        if(j > n-i)
        {
          if (j < n)
          {
            printf("%d ", num);
            num--;
          }
          else
          {
            printf("%d ", num);
            num++;
          }
        }
        else
          cout << "  ";
      }
    }
    
    // 下半部分
    else 
    {
      for (int j=1; j<2*n-i%n; j++)
      {
        if(j > i%n)
        {
          if (j < n)
            {
              printf("%d ", num);
              num--;
            }
          else
            {
              printf("%d ", num);
              num++;
            }
        }
        else
          cout << "  "; 
      }
    }
    cout << endl;
  }
}